Many three-component color image coders follow the broad design shown in FIG. 1 which shows an exemplary known grayscale image coder 100. The known grayscale image coder 100 receives raw image data (l) and performs a forward spatial transform operation 102 thereon to produce coefficients 1t. Examples of forward spatial transforms which may be performed in step 102 include a forward discrete cosine transform, e.g., in the case of JPEG coding and a 9/7 or 5/3 forward wavelet transform, e.g., in the case of JPEG 2000 coding.
The coefficients lt generated by the forward spatial transform 102 are then subject to modeling and entropy coding in the next step 104 which generates the coded image data (lc). Step 104 may result in some data being discarded, e.g., in the case of lossy coding. Examples of operations performed in modeling and entropy coding step 104 include, e.g., in the case of JPEG coding, Quantization and Huffman coding and, in the case of JPEG 2000, Quantization, MQ-coder processing, elaborate modeling, and code-stream re-arrangement.
The know gray scale coding process shown in FIG. 1 is exemplary of both the original JPEG coding algorithm (wherein the spatial transform is a discrete cosine transform) and the JPEG 2000 standard for lossless or lossy coding. The color-component and spatial transforms share two important functions: decorrelating image data (thereby reducing entropy) and facilitating the visual weighting of various errors.
Decoding usually, but not always, involves performing the inverse of the various steps performed during encoding. FIG. 2 illustrates an exemplary known grayscale decoding process 200 for decoding images encoded using an encoder, e.g., standard JPEG or JPEG 2000 encoder, which operates in accordance with the process shown in FIG. 1. The decoding method 200 includes a modeling and entropy decoding step 202 which receives the coded image values lc as input values and generates the intermediate values lxt there from. Examples of operations performed in the modeling and entropy decoding step 202 include, e.g., Huffman decoding and dequantization in the case of JPEG. In the case of JPEG-2000 step 202 may include, e.g., Code-stream re-assembly, elaborate modeling, MQ decoder processing and dequantization. The lxt values are then subject to a reverse spatial transform in step 204 to produce the decoded image values lx. In the case of JPEG, the reverse spatial transform 204 is normally a reverse discrete cosine transform. In the case of JPEG-2000, the reverse spatial transform may be, e.g., a 9/7 or 5/3 reverse wavelet transform. The decoding process 200 normally produces a lossy decoded image since the coding and decoding process normally results in the loss of some image information, e.g., but with the advantage of reduced image data storage and/or transmission requirements thanks to the compression benefits obtained through the use of the coding process.
The grayscale coding process shown in FIG. 1, and decoding process shown in FIG. 2, are shown for a single image component, e.g., the luminance component. However, in the case of color images, each image normally has several components. Consider for example lossy JPEG 2000 method of coding an image, with red, green, and blue components as shown in FIG. 3. The first step in lossy coding process 300 is the irreversible color-component transform step 302 which converts the red, green, and blue (RGB) input components to a luminance component and two chrominance components. In the case of JPEG, the luminance component, indicated in FIG. 3 using L, is generally known as the Y component, while the first and second chrominance components are normally described as U and V components. Thus, in the case of JPEG, separate Y, U and V components are the output of step 302. In the case of JPEG 2000 coding, step 302 would convert an RGB input signal into a Y, Cb, Cr signal format. Thus, in the case of JPEG 2000 coding step 302 would output a separate luminance (Y) signal indicated using an L in FIG. 3, and first and second chrominance components Cb, Cr, respectively, correspond, respectively, to the values U and V output by step 302. Each of the separate luminance and chrominance components L, U, V generated in step 302 are then independently subjected to grayscale coding in steps 304, 306 and 308, respectively. The coded signaling components Lc, Uc and Vc generated by steps 304, 306 and 306 are then merged in step 310 to produce a set of coded image data (Ic) representing the image which is being coded. A noteworthy feature of the known color-component transform shown in FIG. 3 is that each pixel's three components (Y,U,V) or (Y,Cb,Cr) are transformed independently.
JPEG 2000's second lossy coding step, which is part of each of the grayscale image coding steps 304, 306, 308 in some JPEG 2000 coding systems, is the irreversible 9/7 wavelet transform. This transform removes redundancy between neighboring sample values of each component. Each transform step replaces the LL sub-band with a quartet of LL, HL, LH, and HH sub-bands (the original image component being considered an LL sub-band). Thus the resulting number N of sub-bands is N=3L+1, where L is the number of wavelet transform steps.
A noteworthy feature of the wavelet transform is that each component is transformed independently of the others. Moreover, in JPEG 2000 and similar color image coders the subsequent modeling and entropy coding steps operate on each image component independently of the others. This leaves a fair amount of redundancy across image components, e.g., luminance and chrominance components, even after the color-component transform.
Known color image decoding techniques generally involve performing the inverse of the operations performed to encode a color image. FIG. 4 illustrates the steps of an exemplary color image decoding operation 400. The decoding operation involves splitting the set of image data in step 402 into sets corresponding to the separate luminance and chrominance coefficients used to represent the image in an encoded format. Each of the separate luminance and chrominance components is then subject to an independent grayscale image decoding operation in steps 404, 406, 408 respectively. The grayscale decoding operation generates Y, U, and V signals in the case of JPEG and Y, Cb and Cr signals in the case of JPEG 2000. From grayscale image decoding steps 404, 406, 408 operation then proceeds to reverse color transform step 412 wherein the luminance and chrominance signals are subject to a reverse color transform operation which produces signal lx which is an RGB signal representing the lossily decoded image.
While image coding techniques have made significant advances over the years, there remains room for improvement in terms of coding efficiency. Coding efficiency may be expressed in terms of the quality of an image after decoding given a particular amount of data used to represent the image in encoded form. A higher coding efficiency is achieved if the same amount of coded image data provides a superior decoded image and/or if less coded image data is required to achieve the same decoded image quality as achieved by another coding technique that requires the use of more coded image data to achieve the same result.
In view of the above discussion, it is apparent that there is a need for improved coding methods and apparatus which can take advantage of redundancy which exists across color image components to achieve increased coding efficiency as compared to known coding techniques. Any new methods and apparatus should be relatively simple to implement. From an implementation standpoint, it is desirable that the number of coefficients generated as part of a new coding process not be significantly greater than the number of coefficients which would be generated, e.g., using the known process described with regard to FIGS. 1 and 2. In addition, from an implementation standpoint, it is desirable that any coding changes from the known techniques should be relatively easy to implement from a computation and/or hardware perspective and not result in significant increases in encoder and/or decoder complexity over that of known systems.